package es.deusto.eside.aike.laberinto;

import java.io.BufferedReader;
import java.io.InputStreamReader;

/**
 * Clase que permite leer un anfibio que se introduce por teclado.
 */
public final class AnfibioReader {

	/**
	 * Enumeracion que define anfibios
	 */
	public static enum Anfibio {
		SALAMANDRA,
		RANITA_DE_SAN_ANTON,
		SAPO_VIENTRE_DE_FUEGO;
	}
	
	/**
	 * Lee una cadena de texto que se introduce por teclado y la transforma en un valor
	 * de la enumeracion Anfibio.
	 * @return Anfibio con el anfibio leido.
	 */
	public static Anfibio readAnfibio() {
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
			/*
			 * Se lee una linea escrita por teclado, 
			 * Se eliminana espacios blancos al final,
			 * Se convierte la cadena de texto en mayusculas,
			 * Se cambias los espacios en blanco por guiones bajos '_'.
			 */
			String linea = br.readLine().trim().toUpperCase().replace(' ', '_');			
			Anfibio anfibio = null;
			
			try {
				//Se obtiene el valor de la enumeracion que represanta la linea leida.
				anfibio = Anfibio.valueOf(linea);
			} catch (IllegalArgumentException iae) {
				//Se ignora el error.
			}
			
			if (anfibio == null) {
				System.err.println("Nombre de Anfibio incorrecto: '" + linea + "'");
			}
			
			return anfibio;
		} catch (Exception ex) {
			System.err.println("Error leyendo anfibio: " + ex.getMessage());
		}
		
		return null;
	}	
}